1.時間戳 (Timestamp)
* 使用 block.timestamp 來獲取當前區塊的時間戳。
* 了解時間戳的單位是秒數,從 UNIX 時間 1970-01-01 開始計算。
2.合約中的時間操作
* 在智能合約中可以利用時間戳進行各種操作,比如設定某些操作的截止時間、設置鎖 定期等。
* 常見的使用案例是建立投票或眾籌合約,設定何時開始和結束。
* deadline = block.timestamp + durationInSeconds;
* 設置 deadline 的值為當前區塊的時間戳(block.timestamp)加上 durationInSeconds。
* 這表示截止時間為當前時間開始的一段時間後,確保眾籌有一個具體的結束時間。
3.常見的時間操作錯誤與注意事項
* 時間戳依賴問題:時間戳依賴於礦工,因此時間戳可能會有小幅偏差,不能用來做高 精度需求。
* 安全性考量:避免使用時間戳作為隨機數生成器,因為它的可預測性可能被攻擊者利 用。
4.時間相關的應用場景
* 投票合約:設置投票的開始和結束時間。
* 定時支付:在合約中進行定期支付,或者設置鎖定期,防止資金被過早提取。
示例完整合約